package com.whf.android.jar.util.sub.beidou;

import android.location.GnssStatus;
import android.os.Build;

import androidx.annotation.RequiresApi;

import com.whf.android.jar.util.log.LatteLogger;

/**
 * 卫星信息
 *
 * @author qf
 * @version 1.0.1
 */
@RequiresApi(api = Build.VERSION_CODES.N)
public class BeidouCallback extends GnssStatus.Callback {

    @Override
    public void onSatelliteStatusChanged(GnssStatus status) {
        super.onSatelliteStatusChanged(status);
        int satelliteCount = status.getSatelliteCount();
        //解析组装卫星信息
        makeGnssStatus(status, satelliteCount);
    }

    @Override
    public void onStarted() {
        super.onStarted();
    }

    @Override
    public void onStopped() {
        super.onStopped();
    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    private void makeGnssStatus(GnssStatus status, int satelliteCount) {
        int BDSInFix = 0;
        //当前可以获取到的卫星总数，然后遍历
        if (satelliteCount > 0) {
            for (int i = 0; i < satelliteCount; i++) {
                //GnssStatus的大部分方法参数传入的就是卫星数量的角标
                // 获取卫星类型
                int type = status.getConstellationType(i);
                if (GnssStatus.CONSTELLATION_BEIDOU == type) {
                    //北斗卫星类型的判断
                    if (status.usedInFix(i)) {
                        //剔除可信度不高的卫星信号
                        BDSInFix++;
                    }
                }
            }
        }
        LatteLogger.i("当前可以获取到的卫星总数 " + satelliteCount + "个，其中北斗卫星" + BDSInFix);
    }
}
